<?php
/**
* Classe de controle
* Cria a visualização da pesquisa de um objeto : Lançamento
* @package Sistema
* @subpackage Lançamento
*/
class CLancamento_verPorLote extends controlePadraoPesquisa{
	/**
	* Método que define o objeto de negócio que executará a pesquisa
	*/
	public function definirFiltro(){
		$negocio = definicaoEntidade::negocio($this);
		switch(true){
			case isset($_GET['idLote']):
				$this->filtro = new NLote();
				$this->filtro->ler($_GET['idLote']);
				if(!$this->filtro->valorChave()) {
					$this->passarProximoControle('CLote_verPesquisa');
					throw new erroNegocio('Lote não definido');
				}
				$this->sessao->registrar('lote', $this->filtro->ler($_GET['idLote']));
				break;
			case $this->sessao->tem('lote'):
				$this->filtro = $this->sessao->pegar('lote');
				break;
			default :
				throw new erroNegocio('Lote não definido');
		}
	}
	/**
	* Método de criação da coleção a ser listada
	* @return colecaoPadraoNegocio coleção a ser listada
	*/
	public function definirColecao(){
		$nLancamento = new NLancamento();
		$nLancamento->filtrarIdLote(operador::igual($this->filtro->valorChave()));
		return $nLancamento->pesquisar($this->pegarPagina());
	}
	/**
	* Preenche os itens da propriedade menuPrograma
	* @return colecaoPadraoMenu do menu do programa
	*/
	function montarMenuPrograma(){
		$novo = 'Novo Lançamento';
		$abrir= 'Abrir Lote';
		$fechar='Fechar Lote';
		$excluir='Excluir Lote';
		$lotes= 'Ver Lotes';
		$menu = new colecaoPadraoMenu();
		$menu->$novo = new VMenu($novo, '#');
		$menu->$novo->passar_id('novoLancamento');
		if($this->filtro->pegarStatus() == NLote::fechado)
			$menu->$abrir = new VMenu($abrir, '?c=CLote_abrir&chave='.$this->filtro->valorChave());
		if($this->filtro->pegarStatus() == NLote::aberto){
			$menu->$fechar = new VMenu($fechar, '?c=CLote_fechar&chave='.$this->filtro->valorChave());
			$menu->$excluir = new VMenu($excluir, 'javascript:if(confirm("Deseja realmente excluir este lote com todos os lançamentos?")){window.location="?c=CLote_excluir&chave='.$this->filtro->valorChave().'";}');
		}
		$menu->$lotes = new VMenu($lotes, '?c=CLote_verPesquisa');
		return $menu;
	}
	/**
	* metodo de apresentação do negocio
	* @param negocio objeto para a apresentação
	*/
	public function montarApresentacao(negocio $negocio, $tipo = 'edicao'){
		parent::montarApresentacaoAgrupadaDeEdicao($nLancamento = new NLancamento(), $this->visualizacao, 'unica');
		parent::montarApresentacaoAgrupadaDeEdicao($nLancamento = new NLancamento(), $this->visualizacao, 'dupla');
		$this->visualizacao->action = '?c=CLancamento_gravar';
		$this->visualizacao->lote = $this->filtro;
		parent::registrarInternacionalizacao($nLancamento, $this->visualizacao);
		$this->visualizacao->contasJson = CLancamento_verPesquisa::pegarContas()->json();
		$this->visualizacao->loteJson = $this->filtro->json();
		$this->visualizacao->registroIdLancamento = isset($_GET['idLancamento']) ? $_GET['idLancamento'] : '' ;
		$idConta = clone $this->visualizacao->dupla_idConta;
		$idConta->passarId('dupla-idContaContraPartida');
		$idConta->passarName('dupla[idContaContraPartida]');
		$this->visualizacao->dupla_idContaContraPartida = $idConta;

	}
	/**
	 * Método de apresentação da listagem
	 * @param visualizacao $visualizacao
	 * @param colecao $colecao
	 * @param pagina $pagina
	 */
	public static function montarListagem(visualizacao $visualizacao,colecao $colecao,pagina $pagina, $entidade = null){
		$sessao = new sessaoPrograma('lancamento');
		$nLote = new NLote();
		$visualizacao->listagem = new VListaPaginada($colecao,$pagina, $entidade);
		$visualizacao->listagem->adicionarColunaPersonalizada('Data', 'CLancamento_verPesquisa::data', null, 'centro',1);
		$visualizacao->listagem->adicionarColunaPersonalizada('Identificador', 'CLancamento_verPesquisa::identificador', null, 'direita',2);
		$visualizacao->listagem->adicionarColunaPersonalizada('Conta', 'CLancamento_verPesquisa::conta', null, 'esquerda',3);
		$visualizacao->listagem->adicionarColunaPersonalizada('Histórico', 'CLancamento_verPesquisa::historico', null, 'esquerda',4);
		$visualizacao->listagem->adicionarColunaPersonalizada('Saída', 'CLancamento_verPesquisa::credito', null, 'direita',6);
		$visualizacao->listagem->adicionarColunaPersonalizada('Entrada', 'CLancamento_verPesquisa::debito', null, 'direita',5);
		if($nLote->ler($sessao->pegar('lote')->valorChave())->pegarStatus() == NLote::aberto){
			$visualizacao->listagem->adicionarColunaPersonalizada('', 'CLancamento_verPesquisa::editar', null, 'centro',VListaPaginada::colunaEditar);
		}else{
			$visualizacao->listagem->removerColuna(VListaPaginada::colunaEditar);
			$visualizacao->listagem->removerColuna(VListaPaginada::colunaExcluir);
		}
	}
}
?>